

/* This is the entry point into the kernel.  The boot loader 
 * will load the kernel into memory and call main() here. */

/* The magic number for the Multiboot header. */
#define MULTIBOOT_HEADER_MAGIC          0x1BADB002
     
/* The flags for the Multiboot header. */
#ifdef __ELF__
# define MULTIBOOT_HEADER_FLAGS         0x00000003
#else
# define MULTIBOOT_HEADER_FLAGS         0x00010003
#endif
     
/* The magic number passed by a Multiboot-compliant boot loader. */
#define MULTIBOOT_BOOTLOADER_MAGIC      0x2BADB002
 
struct MultibootHeader {
	unsigned long magic;
	unsigned long flags;
	unsigned long checksum;
	unsigned long header_addr;
	unsigned long load_addr;
	unsigned long load_end_addr;
	unsigned long bss_end_addr;
	unsigned long entry_addr;
};

int main ();

/* TODO:  need a mechanism to set up these fields at compile time */
/* TODO:  need graphics mode fields */
struct MultibootHeader Header = {
	MULTIBOOT_HEADER_MAGIC,
	MULTIBOOT_HEADER_FLAGS,
	(unsigned long) -MULTIBOOT_HEADER_MAGIC - MULTIBOOT_HEADER_FLAGS,
	(unsigned long) &Header,
	(unsigned long) &Header,
	4000,
	0,
	(unsigned long) main
};


int main ()
{

	/* ha ha the kernel returns... */
	return 0;
}

